<?php
/**
 * Created by PhpStorm.
 * User: lenovo
 * Date: 2020/6/29
 * Time: 11:54
 */

namespace App\HttpController\Admin;


use App\Services\AdminService;
use App\Services\ReponseCodeService;
use EasySwoole\Validate\Validate;

class Admin extends AdminBaseController
{
    /**
     * showdoc
     * @catalog 后台/管理员
     * @title  登录
     * @description 登录后台
     * @method POST
     * @url /admin/login
     * @param username  是 string 用户名
     * @param password 是 string 密码
     * @return_param  code int 状态码(200:成功0:失败400:参数错误)
     * @return_param  username 用户名
     * @return_param  realname 真实姓名
     * @return_param  head 头像
     * @return_param  mobile 手机号
     * @return_param  created_at 创建时间
     * @return_param  updated_at更新时间
     * @remark
     */
    public function Login(){
        $param =  $this->param;
        $valitor = new Validate();
        $valitor->addColumn('username', '用户名')->required('用户名不为空');
        $valitor->addColumn('password','密码')->required('密码不能为空');

        $bool = $valitor->validate($param);
        if(!$bool){
            return $this->writeJson(ReponseCodeService::CODE_BAD_REQUEST, null, $valitor->getError()->__toString());
        }

       $adminService = new AdminService();
       $loginInfo = $adminService->loginByUsername( $param['username'], $param['password']);
        if(!is_array($loginInfo)){
            return $this->writeJson(ReponseCodeService::CODE_BAD_REQUEST, null, 'faile');
        }
      return   $this->writeJson(ReponseCodeService::CODE_OK,$loginInfo, "sucess");
    }

    /**
     * showdoc
     * 添加管理员
     * @catalog 后台/管理员
     * @title  添加管理员
     * @description 添加管理员
     * @method POST
     * @url /admin
     * @param app_id    是 int 归属应用id，如果传具体应用id，则管理人员会归属到应用下，传0是全局的
     * @param username  是 string 用户名
     * @param password 是 string 密码，限制6位数以上，不限制长度
     * @param status  否 int 状态：0未启用，1启用
     * @return_param  code int 状态码(200:成功0:失败400:参数错误)
     * @remark 创建成功后，请设置用户组，否则用户无法正常使用
     */
    public function create(){
        $param =  $this->param;
        $valitor = new Validate();
        $valitor->addColumn('username', 'username')->required('Username is require');
        $valitor->addColumn('password','password')->required('Password is require')->lengthMin(6,'Password requires at least 6 strings');
        $valitor->addColumn('status','status')->inArray([0,1,2,3],'Status value is illegal');
        $valitor->addColumn('app_id', 'app_id')->required('Appid is require')->numeric('Appid  must be a number');
        $bool = $valitor->validate($param);
        if(!$bool){
            return $this->writeJson(ReponseCodeService::CODE_BAD_REQUEST, null, $valitor->getError()->__toString());
        }
        $adminService = new AdminService();
        $ret= $adminService->createAdmin( $param);

        return   $this->writeJson(  $ret,array(), ReponseCodeService::$phrases[ $ret]);
    }

    /**
     * showdoc
     * 编辑管理员
     * @catalog 后台/管理员
     * @title  编辑管理员
     * @description 编辑管理员
     * @method PUT
     * @url /admin
     * @param username  是 string 用户名
     * @param password 是 string 密码，限制6位数以上，不限制长度
     * @param realname 否 string 真实名字
     * @param head   否 string 头像
     * @param mobile  否 string 手机号
     * @param status  否 int 状态：0未启用，1启用
     * @param admin_group_ids 否 string 用户组的id，多个id用,做分割点，例如：1或者1,5
     * @return_param  code int 状态码(200:成功0:失败400:参数错误)
     * @remark 创建成功后，请设置用户组，否则用户无法正常使用
     */
    public function edit(){
        $param =  $this->param;
        $valitor = new Validate();
        $valitor->addColumn('mobile', 'mobile')->numeric('Mobile Is Require Numeral');
        $valitor->addColumn('password','password')->required('Password is require')->lengthMin(6,'Password requires at least 6 strings');
        $valitor->addColumn('realname','realname')->lengthMin(2,'Illegal Realname');
        $valitor->addColumn('head','head');
        $valitor->addColumn('status','status')->inArray([0,1,2,3],'Status value is illegal');
        $bool = $valitor->validate($param);
        if(!$bool){
            return $this->writeJson(ReponseCodeService::CODE_BAD_REQUEST, null, $valitor->getError()->__toString());
        }
        #管理员
        $adminService = new AdminService();
    }

    /**
     * 删除管理员
     */
    public function del(){

    }



}